import { getToken, setToken, removeToken } from '@/utils/auth'

import { login, getInfo } from '@/api/user'

import { constantRoutes, resetRouter } from '@/router'
export default {
  // 命名空间开启
  namespaced: true,
  state () {
    return {
      token: getToken(),
      userInfo: {},
      routes: constantRoutes
    }
  },
  // 修改
  mutations: {
    // 更新token的方法
    updateToken (state, payload) {
      state.token = payload
      setToken(payload)
    },
    // 删除token的方法
    delToken (state) {
      state.token = null

      removeToken()
    },
    // 修改用户信息的方法
    UpdateUserInfo (state, payload) {
      state.userInfo = payload
    },

    // 修改路由

    updateRoutes (state, payload) {
      state.routes = [...constantRoutes, ...payload]
    }
  },
  // 异步代码集合
  actions: {
    // 登录请求获取token
    async storeLogin (context, payload) {
      // 发起请求获取token
      const token = await login(payload)

      // 提交修改token的方法
      context.commit('updateToken', token)
    },
    // 获取用户信息请求
    async storeGetUserInfo (context) {
      const data = await getInfo()

      context.commit('UpdateUserInfo', data)

      return data
    },
    // 登出方法
    async storeGetOut (context) {
      context.commit('delToken')
      context.commit('UpdateUserInfo', {})
      resetRouter()
    }
  }
}
